The present invention is directed to a method and circuit for the controlling the flow of information packets in a communications network. More particularly, the present invention is directed to a circuit and method for use with the Infiniband Networking (and storage) standard in which information packets arriving at an input port are discarded prior to being placed in a queue for transfer to an output port. This filtering is carried out through use of information contained at least partially within the data packet or information packet (herein after, “packet”) header.
This invention is a routing circuit for an Infiniband switch that is capable of determining the output port filtering conditions before actually routing the packet to the output port. The primary advantage of this filtering operation is found within Infiniband switches that have a centralized queue; however, advantages are also obtained using cross-bar switches as well. By filtering out packets that contain output port violations before they are put into the queue, any packet actually pulled out of the central queue by the output port is guaranteed to be good and is transmittable (with regard to the filters contained within this invention). This improves overall transmission performance by reducing the load on the output ports, since space is not wasted in the central queue by packets that would have eventually been discarded.
Current solutions to this problem involve filtering operations performed at the output ports after the packet has been pulled by the port from either a centralized queue or from a cross-bar switch. In either case, if an error is seen, the output port discards the packet instead of performing the actual task of packet transfer. In prior circuits for performing Infiniband transmission and routing, separate circuits are provided in the input and output ports for filtering. If a packet gets through the input filter checks, it is routed to the output port where the checks are repeated. If the packet is subsequently found to be invalid, it is discarded. However, the discarding process consumes output port bandwidth that otherwise could be used for data transmission.